//以下三种都表是对象
let o:object;
o={};
o=function(){};

//{}可以置顶对象包含哪些属性，语法：{属性名：属性值，属性名：属性值},加?表示属性为可选
let p:{name:string,age?:number};
p={name:'孙悟空'};

//[propName（属性名）:string（属性名类型）]:any（属性类型）  表示任意类型属性
let q:{name:string,[propName:string]:any};

/*设置函数结构的类型声明
  语法：（形参：形参类型，形参：形参类型。。。。）=>返回值
**/
let d:(a:number,b:number)=>number;
d=function(n1,n2){
    return n1+n2;
}

//数组
let r: string[];
let t:Array<number>;

/**
 * 元组：固定长度的数组
 */
let g:[string,string];//表是长度为2的数组

/**
 * enum:枚举
 */
enum Gender{
    Male=0,
    Female=1
}
let h:{name:string,gender:Gender};
h={
    name:'孙悟空',
    gender:Gender.Male
}

//类型别名
type myType=1|2|3|4|5;
let k:myType;